package zuoYe;

import java.util.Scanner;

public class xunHuan {
    public static void test01(){
        //输出1-10与5相乘的结果
        for(int i = 1;i <= 10;++i)
            System.out.println(i * 5);
    }

    public static void test02(){
        //用程序计算1-100的和，并输出
        int sum = 0;
        for(int i = 1;i <= 100;++i)
            sum += i;
        System.out.println(sum);
    }

    public static void test03(){
        //求出所有的水仙花数，水仙化数为3位数，并且每位上的数字的立方和等于该数本身
        for(int i = 100;i <= 999;++i){
            int
                    g = i % 10,
                    s = i / 10 % 10,
                    b = i / 100;
            if(g*g*g+s*s*s+b*b*b == i)
                System.out.println(i);
        }
    }

    public static void test04(){
        //4.把100-200之间不能被3整除的数输出
        for(int i = 100;i <= 200;++i)
            if(i % 3 != 0)
                System.out.println(i);
    }

    public static void test05(){
        //判断用户输入的数字是否为完数
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数");
        int sum = 0 , val = sc.nextInt();
        for(int i = 1;i < val;++i)
            if(val % i == 0)
                sum += i;
        if(sum == val)
            System.out.println("是完数");
        else
            System.out.println("不是完数");
    }

    public static void test06(){
        //有一堆桃子，猴子第一天吃了一半，又多吃了一个，第二天吃余下桃子的一半，又多吃一个，
        // 第十天猴子想吃桃子，发现只剩一个，问第一天又多少个小球落地
        int taoZi = 1;
        for(int i = 0;i < 9;++i) {
            ++taoZi;
            taoZi *= 2;
        }
        System.out.println(taoZi);
    }

    public static void test07(){
        //一个球从1000米高空往下掉，
        // 落地后弹起，每次弹起的高度是落下时高度的一半，
        // 问第5次落地时弹起的高度，
        // 一共又经过了多长的距离呢？  while
        double gaoDu = 1000;
        for(int i = 0;i < 5;++i)
            gaoDu /= 2;
        System.out.println(gaoDu);
    }

    public static void test08(){
        //用户输入一个数字n，判断是否为素数(只能被1和自身整除的数)
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数");
        int num = sc.nextInt(),i;
        for(i = 2;i < num;++i)
            if(num % i == 0)
                break;
        if(i == num)
            System.out.println("是素数");
        else
            System.out.println("不是素数");
    }

    public static void test09(){
        //1-100之间的素数  嵌套循环
        for(int i = 2;i <= 100;++i){
            int j;
            for(j = 2;j < i;++j)
                if(i % j == 0)
                    break;
            if(i == j)
                System.out.println(i);
        }
    }

    public static void test10(){
        //两个数字的最小公倍数和最大公约数
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个数");
        int val1 = sc.nextInt();
        System.out.println("请输入第二个数");
        int val2 = sc.nextInt();

        int b = val1;
        while(b % val1 != 0 || b % val2 != 0)
            ++b;
        System.out.printf("最小公倍数为：%d\n",b);

        int y = 1;
        for(int i = 1;i < val1;++i)
            if(val1 % i == 0 && val2 % i == 0)
                y = i;
        System.out.printf("最大约倍数为：%d\n",y);
    }

    public static void test11(){
        //1!+2!+3!+4!+…n!;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数");
        int n = sc.nextInt();
        int a = 0;
        int b = 1;
        for(int i = 1;i <= n;++i)
            a += (b*=i);
        System.out.println(a);
    }

    public static void test12(){
        //将1998-2008年之间的闰年年份输出
        for(int i = 1998;i <= 2008;++i)
            if(i % 4 == 0 && i % 400 != 0 || i % 400 == 0)
                System.out.println(i);
    }

    public static void test13(){
        //13.用户输入学生个数，循环接受本班学生的考试成绩，
        // 每次接受完一个学生的分数，询问用户是否要继续，答案是‘Y’时继续接受，否则，停止接受，
        // 最后输出所有学生的总分和平均分
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入人数");
        int size = sc.nextInt();
        double sum = 0;
        for(int i = 0;i < size;++i){
            System.out.printf("请输入第%d个学生的成绩\n",i+1);
            sum += sc.nextDouble();
        }
        System.out.printf("总分为：%f,平均分为：%f",sum,sum/size);
    }

    public static void test14(){
        //1-1/2+1/3-1/4+1/5。。。。。1/n
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入n值");
        int n = sc.nextInt();
        double sum = 0;
        for(double i = 1;i < n;++i)
            sum += (i % 2 == 1 ? 1:-1) * (1/i);
        System.out.println(sum);
    }

    public static void test15(){
        //计算用户输入的数字的阶乘，例如用户输入的是5，则计算5的阶乘，5的阶乘为 5*4*3*2*1
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个值");
        int n = sc.nextInt(),sum = 1;
        while(n > 0)
            sum *= n--;
        System.out.println(sum);
    }
    public static void test16(){
        //用代码实现一个猜数字的小游戏,
        // 假设要猜的目标数字是8,
        // 先可以提示用户猜的数在0-10之间,
        // 然后循环接受用户输入的数字,
        // 如果用户输入的数字比目标数字小,就提示”小了,继续猜”,继续接受用户输入的数字,继续比较,如果大了,就”大了,继续猜”,
        // 如果用户在5次以内猜对了,就提示”你真聪明,猜对了!”并结束循环,
        // 如果猜了5次还没有猜对,就提示”真笨,不跟你玩了”,并结束循环
        Scanner sc = new Scanner(System.in);

        System.out.println("猜数字,0到10");

        int i;
        for(i = 1;i <= 5;++i){
            int val = sc.nextInt();
            if(val > 8)
                System.out.println("大了,继续猜");
            else if(val < 8)
                System.out.println("小了，继续猜");
            else
                break;
        }
        if(i > 5)
            System.out.println("真笨,不跟你玩了");
        else
            System.out.println("你真聪明,猜对了");
    }

    public static void test17(){
        //循环接受用户输入的字母,统计其中大写字母的个数,当用户输入’N’的时候停止接受
        Scanner sc = new Scanner(System.in);
        int count = 0;
        boolean isGo = true;
        while(isGo){
            System.out.println("请输入一个字符");
            String val = sc.next();
            if(val.charAt(0) >= 'A' && val.charAt(0) <= 'Z')
                ++count;
            System.out.println("是否继续（Y/N）");
            val = sc.next();
            if(val.equals("N"))
                isGo = false;
        }
        System.out.printf("大写字符有%d个\n",count);
    }

    public static void test18(){
        //求1-100之间所有3的倍数的和(用关键字continue和不用continue两种方法做)
        int sum = 0;

        for(int i = 1;i <= 100;++i){
            if(i % 3 != 0)
                continue;
            sum += i;
        }

        System.out.println(sum);

        sum = 0;

        for(int i = 1;i <= 100;++i)
            if(i % 3 == 0)
                sum += i;

        System.out.println(sum);
    }

    //19,20??????????????????????

    public static void test19(){
        //打印一个10行10列的正方形
        for(int i = 0;i < 10;++i){
            for(int j = 0;j < 10;++j)
                System.out.print("*");
            System.out.print("\n");
        }
    }

    public static void test20(){
        //打印一个10行的直角三角形
        for(int i = 0;i < 10;++i){
            for(int j = 0;j < i;++j)
                System.out.print("*");
            System.out.print("\n");
        }
    }

    public static void test21(){
        //打印一个九九乘法表
        for(int i = 1;i <= 10;++i){
            for(int j = 1;j <= i;++j)
                System.out.printf("%d * %d = %d\t",i,j,i*j);
            System.out.print("\n");
        }
    }

    public static void test22(){
        //打印一个5行的等腰三角形
        for(int i = 0;i < 5;++i){
            for(int j = 0;j < 5 - i - 1;++j)
                System.out.print(" ");
            for(int j = 0;j < i*2+1;++j)
                System.out.print("*");
            System.out.print("\n");
        }
    }

    public static void test23(){
        //打印一个5行的倒立的等腰三角形
        for(int i = 4;i >= 0;--i){
            for(int j = 0;j < 5 - i - 1;++j)
                System.out.print(" ");
            for(int j = 0;j < i*2+1;++j)
                System.out.print("*");
            System.out.print("\n");
        }
    }

    public static void test24(){
        //打印一个九行的菱形
        for(int i = 4;i >= -4;--i){
            for(int j = 1;j <= Math.abs(i);++j)
                System.out.print(" ");
            for(int j = 1;j <= (4-Math.abs(i))*2+1;++j)
                System.out.print("*");
            System.out.print("\n");
        }
    }

    public static void test25(){
        //求S = a + aa + aaa + aaaa + aaaaa + aaaaaa + aaaaaaa +……   a和n从键盘输入,例如用户输入的a是2,n是5,则要求将2+22+222+2222+22222的和计算出来
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入n的值");
        int n = sc.nextInt();
        System.out.println("请输入a的值");
        int a = sc.nextInt();
        int sum = 0;
        for(int i = 1;i <= n;++i) {
            for(int j = 1 ;j <= i;++j)
                sum += Math.pow(10,j-1) * a;
        }
        System.out.println(sum);
    }

}
